home *** CD-ROM | disk | FTP | other *** search
/ Hardcore Gamer Resource Kit / Hardcore Gamer Resource Kit - Disc 3.iso / screensavers / saver25.zip / SOURCE.ZIP / Vector3.cpp < prev    next >
C/C++ Source or Header  |  1997-07-15  |  1KB  |  99 lines

  1.  
  2. #include "Vector3.h"
  3.  
  4. Vector3 X0(1,0,0);
  5. Vector3 Y0(0,1,0);
  6. Vector3 Z0(0,0,1);
  7.  
  8. /*
  9.  * Basic operators
  10.  */
  11. void Vector3::operator =(Vector3 a) {
  12.     x=a.x;
  13.     y=a.y;
  14.     z=a.z;
  15. }
  16. void Vector3::operator +=(Vector3 a) {
  17.     x+=a.x;
  18.     y+=a.y;
  19.     z+=a.z;
  20. }
  21. void Vector3::operator -=(Vector3 a) {
  22.     x-=a.x;
  23.     y-=a.y;
  24.     z-=a.z;
  25. }
  26.  
  27. Vector3 Vector3::operator +(Vector3 a) {
  28.     Vector3 r;
  29.     r.x=x+a.x;
  30.     r.y=y+a.y;
  31.     r.z=z+a.z;
  32.     return r;
  33. }
  34. Vector3 Vector3::operator -(Vector3 a) {
  35.     Vector3 r;
  36.     r.x=x-a.x;
  37.     r.y=y-a.y;
  38.     r.z=z-a.z;
  39.     return r;
  40. }
  41. Vector3 Vector3::operator -() {
  42.     Vector3 r;
  43.     r.x=-x;
  44.     r.y=-y;
  45.     r.z=-z;
  46.     return r;
  47. }
  48. Vector3 Vector3::operator *(float a) {
  49.     Vector3 r;
  50.     r.x = x*a;
  51.     r.y = y*a;
  52.     r.z = z*a;
  53.     return r;
  54. }
  55. Vector3 Vector3::operator /(float a) {
  56.     Vector3 r;
  57.     r.x = x/a;
  58.     r.y = y/a;
  59.     r.z = z/a;
  60.     return r;
  61. }
  62.  
  63.  
  64. Vector3 Vector3::operator *(Vector3 a) {
  65.     Vector3 r;
  66.     r.x = y*a.z - z*a.y;
  67.     r.y = z*a.x - x*a.z;
  68.     r.z = x*a.y - y*a.x;
  69.     return r;
  70. }
  71.  
  72. float Vector3::dot(Vector3 a) {
  73.     return x*a.x + y*a.y + z*a.z;
  74. }
  75.  
  76. Vector3 Vector3::in(Vector3 a) {
  77.     Vector3 r;
  78.     r.x = x*a.x;
  79.     r.y = y*a.y;
  80.     r.z = z*a.z;
  81.     return r;
  82. }
  83.  
  84.  
  85. float Vector3::len() {
  86.     float r;
  87.     r=(float)sqrt(x*x+y*y+z*z);
  88.     return r;
  89. }
  90.  
  91. Vector3 Vector3::normalize() {
  92.     Vector3 r;
  93.     float l=len();
  94.     if(l==0) l=0.00000000001f;
  95.     r=(*this)/l;
  96.     return r;
  97. }
  98.  
  99.